Check out webmonkey.com...they have examples.
Here is some code I've used that does some version checking....
<script language="javascript" type="text/javascript" src="/pub/js/commserver.js"></script>
<script language="javascript" type="text/javascript" src="/pub/js/cookieLibrary.js"></script>
<script language="javascript" type="text/javascript" src="/pub/js/urlPlus.js"></script>
<script language="javascript" type="text/javascript" src="/pub/js/userCode.js"></script>
<script language="Javascript">
<!-- hide script
/*
Plugin Detector()
Source: Webmonkey Code Library
(
http://www.hotwired.com/webmonkey/javascript/code_library/)
Author: Nadav Savio
Author Email: webmonkey@giantant.com
*/
// this is where we write out the VBScript for MSIE Windows
var WM_startTagFix = '</';
var msie_windows = 0;
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)){
msie_windows = 1;
document.writeln('<script language="VBscript">');
document.writeln('\'This will scan for plugins for all versions of Internet Explorer that have a VBscript engine version 2 or greater.');
document.writeln('\'This includes all versions of IE4 and beyond and some versions of IE 3.');
document.writeln('Dim WM_detect_through_vb');
document.writeln('WM_detect_through_vb = 0');
document.writeln('If ScriptEngineMajorVersion >= 2 then');
document.writeln(' WM_detect_through_vb = 1');
document.writeln('End If');
document.writeln('Function WM_activeXDetect(activeXname)');
document.writeln(' on error resume next');
document.writeln(' If ScriptEngineMajorVersion >= 2 then');
document.writeln(' WM_activeXDetect = False');
document.writeln(' WM_activeXDetect = IsObject(CreateObject(activeXname))');
document.writeln(' If (err) then');
document.writeln(' WM_activeXDetect = False');
document.writeln(' End If');
document.writeln(' Else');
document.writeln(' WM_activeXDetect = False');
document.writeln(' End If');
document.writeln('End Function');
document.writeln(WM_startTagFix+'script>');
}
function WM_pluginDetect(plugindescription, pluginxtension, pluginmime, activeXname){
//This script block will test all user agents that have a real plug-in array
//(i.e. Netscape) and set the variables, otherwise it directs the routine
// to WM_activeXDetect to detect the activeX control.
// First define some variables
var i,plugin_undetectable=0,detected=0, daPlugin=new Object();
// Then we check to see if it's an MSIE browser that you can actually
// check for the plugin in question.
if (msie_windows && WM_detect_through_vb){
plugin_undetectable = 0;
} else {
plugin_undetectable = 1;
}
// If it has a real plugins or mimetypes array, we look there for the plugin first
if(navigator.plugins) {
numPlugins = navigator.plugins.length;
if (numPlugins > 1) {
if (navigator.mimeTypes && navigator.mimeTypes[pluginmime] && navigator.mimeTypes[pluginmime].enabledPlugin && (navigator.mimeTypes[pluginmime].suffixes.indexOf(pluginxtension) != -1)) { // seems like we have it, let's just make sure and check the version (if specified)
if ((navigator.appName == 'Netscape') && (navigator.appVersion.indexOf('4.0') != -1)) { // stupid, stupid Netscape can't handle the references to navigator.plugins by number, sooo...
for(i in navigator.plugins) {
if ((navigator.plugins[i].description.indexOf(plugindescription) != -1) || (i.indexOf(plugindescription) != -1)) { // some versions of quicktime have no description. feh!
detected=1;
break;
}
}
} else {
for (i = 0; i < numPlugins; i++) {
daPlugin = navigator.plugins[i];
if ((daPlugin.description.indexOf(plugindescription) != -1) || (daPlugin.name.indexOf(plugindescription) != -1)) {
detected=1;
break;
}
}
}
// Mac weirdness
if (navigator.mimeTypes[pluginmime] == null) {
detected = 0;
}
}
return detected;
} else if((msie_windows == 1) && !plugin_undetectable){
return WM_activeXDetect(activeXname);
} else {
return 0;
}
} else {
return 0;
}
}
// this next function just makes it easy to detect the common plugins
function WM_easyDetect(whichPlugin) {
// this function just makes it easy to do basic plug-in detection without
// knowing all the mimetypes and activeX names and such
var isItThere = 0;
if( (whichPlugin == 'flash') || (whichPlugin == 'Flash') ) {
isItThere = WM_pluginDetect('Flash', 'swf', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash');
} else if( (whichPlugin == 'director') || (whichPlugin == 'Director') ) {
isItThere = WM_pluginDetect('Shockwave', 'dcr', 'application/x-director', 'SWCtl.SWCtl.1');
} else if( (whichPlugin == 'quicktime') || (whichPlugin == 'Quicktime') || (whichPlugin == 'QuickTime') ) {
isItThere = WM_pluginDetect('QuickTime', 'mov', 'video/quicktime', '');
} else if( (whichPlugin == 'realaudio') || (whichPlugin == 'Realaudio') || (whichPlugin == 'RealAudio') ) {
isItThere = (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','rmocx.RealPlayer G2 Control')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','RealVideo.RealVideo(tm) ActiveX Control (32-bit)'))
} else if( (whichPlugin == 'acrobat5') || (whichPlugin == 'Acrobat5')) {
isItThere = (WM_pluginDetect('Acrobat', 'pdf', 'application/pdf', 'PDF.PdfCtrl.5'))
} else if( (whichPlugin == 'acrobat4') || (whichPlugin == 'Acrobat4')) {
isItThere = (WM_pluginDetect('Acrobat', 'pdf', 'application/pdf', 'PDF.PdfCtrl.1'))
} else if( (whichPlugin == 'acrobatexch') || (whichPlugin == 'Acrobatexch')) {
isItThere = (WM_pluginDetect('Acrobat', 'pdf', 'application/pdf', 'AcroExch.Document'))
} else {
alert('You need to tell me which plug-in to look for, like so:\n\n' + ' WM_easyDetect(\'flash\')\n\n' + ' WM_easyDetect(\'director\')\n\n' + ' WM_easyDetect(\'quicktime\')\n\n' + ' WM_easyDetect(\'realaudio\')');
}
return isItThere;
}
// end hiding of script -->
</script>
<!-- this next part uses WM_easyDetect to check for the basic plugins. -->
<script>
<!--
// here's how you might use this code...
// document.write('<b>Your plugin report...</b><br><br>\n\n'
//+ 'Flash: ' + WM_easyDetect('flash')
//+ '<br>\nDirector: ' + WM_easyDetect('director')
//+ '<br>\nQuickTime: ' + WM_easyDetect('quicktime')
//+ '<br>\nReal Player: ' + WM_easyDetect('realaudio')
//+ '<br>\nAdobe Acrobat Document Exchange: ' + WM_easyDetect('acrobatexch')
//+ '<br>\nAdobe Acrobat V4: ' + WM_easyDetect('acrobat4')
//+ '<br>\nAdobe Acrobat V5: ' + WM_easyDetect('acrobat5')
//+ '<br><br>');
var browser = navigator.appName;
var version = ""
if (browser == "Netscape") {
version = navigator.appVersion.substring(0, navigator.appVersion.indexOf(" "));
if ( version >= "5.0") version = navigator.userAgent.substring( navigator.userAgent.lastIndexOf("/")+1);
} else {
version = navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE"), navigator.appVersion.length);
version = version.substring(version.indexOf(" "), version.indexOf(";"));
}
var GBMS = false;
if ( navigator.userAgent.indexOf('UnixWare') > 0 ) GBMS = true;
if ( GBMS ) {
document.write('<b>GBMS</b> users must wait for an upgrade later in the year to be able to use Tire-HQ. ');
} else {
document.write('In order to take advantage of all of Tire-HQ\'s new features, your computer must be configured properly.<br>');
document.write('The sections below summarize whether or not your computer is configured properly for use with Tire-HQ.<br><br>\n');
document.write('<b>1\) Browser version:</b><br><br>\n');
document.write("You are using <b>" + browser + "</b> version <b>" + version + "</b> as your internet browser.<br><br>\n")
document.write('In order to take advantage of all of Tire-HQ\'s new features you should be using Internet Explorer 5.5 and above or Netscape 7.02 and above.<br><br>\n');
document.write('You can download the latest version of Internet Explorer at <a href="http://www.microsoft.com/ie">www.microsoft.com/ie</a>. ');
document.write('You can download the latest version of Netscape at <a href="http://www.netscape.com/browsers">www.netscape.com/browsers</a>. ');
document.write('For either browser, you should make sure that you pick the "Full" or "Complete" installation to make sure you get the features required to enable the Tire-HQ menus.<br><br>\n');
if ( navigator.userAgent.indexOf('Win95') > 0 ) {
document.write('<b>NOTE:</b> We have detected that you may possibly be running <b>Microsoft Windows 95</b>. Both browsers listed above require a minimum operation system of Windows 98.<br><br>\n');
}
document.write('<b>2) Browser configuration:</b><br><br>\n');
document.write('You can read about how to configure your ' + browser + ' browser properly ');
if ( browser == 'Netscape') {
if ( version > '4.8' ) {
document.write('<a href=\"/pub/miscinfo.nsf/0/DC047A1058BBFA8985256CFA0075DD54?opendocument\" target=\"new\">here</a>.<br><br>\n');
} else {
document.write('by going to the menu button and navigation to \"Help!\", then to \"Browser Configuration\".<br><br>\n');
}
} else {
document.write('<a href=\"/pub/miscinfo.nsf/0/3C06601E8873CC7985256CFA0075DD53?opendocument\" target=\"new\">here</a>.<br><br>\n');
}
document.write('<b>3) Screen resolution:</b><br><br>\n');
var pass = false;
if (screen.height >= 768 & screen.width >= 1024) pass = true;
document.write('Your screen resolution is set to ' + screen.width + ' pixels X ' + screen.height + ' pixels.<br><br>\n');
document.write('Tire-HQ has many screens that require us to present a lot of information on one page. Although we have tried to make the site usable at 800 pixels X 600 pixels, you will be much happier using Tire-HQ if you set your screen resolution to 1024 pixels X 768 pixels. ');
if ( pass ) { document.write('Your screen resolution meets this requirement.<br><br>\n');
} else {
document.write('Your screen resolution does not meet this requirement.<br><br>\n');
}
document.write('You can find out more about changing your screen resolution <a href=\"/pub/miscinfo.nsf/0/FB757A07E8A5748085256CFC005AE52D?opendocument\" target=\"new\">here</a>.<br><br>\n');
document.write('<b>4) Adobe Acrobat:</b><br><br>');
var passAdobe = "";
if (WM_easyDetect('acrobatexch')) passAdobe = "(Exchange)";
if ( passAdobe=="") {
if (WM_easyDetect('acrobat4')) passAdobe = "4";
}
if ( passAdobe==""){
if (WM_easyDetect('acrobat5')) passAdobe = "5";
}
if ( passAdobe == "" ) {
document.write('We cannot determine if you currently have the Adobe Acrobat Reader plug-in.<br><br>Acrobat is the program used for printing most report documents on Tire-HQ. ');
document.write('You can download the latest vesion of Adobe Acrobat Reader <a href=\"javascript:getCookie(); document.location=\'http://\' + commerceServer() + \'/webapp/wcs/stores/servlet/OMSingleSignOn?URL=OMProductListSelectView&changeCustomer=Y&logonId=\' + getUserId()\">here</a>.<br><br>\n');
} else {
document.write('You have the <b>Adobe Acrobat Reader version ' + passAdobe + '</b> plug-in.<br><br>Acrobat is the program used for printing most report documents on Tire-HQ.<br>\n');
}
}
// -->
</script>